In recent years, computer disk drives, and particularly hard disk drives, have been the subject of intense research and development efforts. These efforts have been directed at the attainment of a number of often contradictory goals, which include enhanced drive capacity, speed and reliability. Increasingly, so called RAID systems, or redundant arrays of inexpensive disks, have come to be regarded as the most viable solution when ultra-high performance disk drives are required. RAID systems combine a large number of independent disk drives into a single array. The independent drives are accessed in parallel with a single word (or other unit) of memory split across the many drives.
As an example of a RAID system, a system might be constructed which uses thirty-two drives for data storage. Generally, a system of this type would also include a number of additional drives for storage of error correcting codes (ECC). In use, a single word may be accessed by retrieving a single bit from each of the data drives. The integrity of the word would be protected by simultaneously retrieving the error correcting codes stored in the ECC drives. Together, the thirty-two drives and the ECC drives would provide a single system which, theoretically, yields a transfer rate which exceeds a typical drive by a factor of thirty-two. Additionally, the combined storage of the RAID system exceeds the capacity of a single system by the same factor of thirty-two. At the same time, the integrity of the data in the RAID system is protected by the correcting codes stored in the ECC drives. The overall result is that the RAID system provides a high-performance, high-capacity and high reliability system for the storage and retrieval of computer data.
The development of RAID systems has not, however, prevented the manufactures of disk drives from seeking even faster systems for computer disk drives. Nor has the development of RAID systems prevented manufacturers from attempting to develop cheaper alternatives to RAID technology. As an example, some RAID systems include a form of high-speed volatile memory. The volatile memory stores recently accessed data, allowing fast access to this data and generally accelerating the through-put of the RAID systems. Alternatively, in some cases, a high-speed volatile memory may be combined with an array of lower performance disks to produce an inexpensive disk array which still offers acceptable performance.
There are, unfortunately, several disadvantages associated with the use of volatile memory in combination with RAID systems. One such disadvantage is attributable to the increased complexity (and hence, increased unreliability) of systems which include both the basic RAID system and the additional volatile memory. Basically, in any case where a volatile memory is involved, there is a danger that the volatile memory will suffer some type of catastrophic failure, and all of the data in the volatile memory will be lost. This problem becomes increasingly severe in systems which include more than one level of volatile memory. For example, if data were to be cached at the level of the disk drives as well as at the disk controller level, there would be multiple volatile memories, each with an associated risk of failure.
Several solutions have been adopted to mitigate or avoid the ill effects associated with the failure of volatile memories. For example, for some RAID systems, a battery power supply is included to power the volatile memories in the event of a power failure. Alternatively, in some systems, volatile memories are replaced with high-speed non-volatile memory components. This latter type of system is also protected in the event of a power failure. In both cases however, the particular solution used is directed at the protection of a specific memory or memories. As a result, if an additional level of caching or buffering is added, there is, once again, a risk of data loss. This problem becomes increasingly severe as disk systems are subject to increasing levels of caching and buffering between the disk drive device and the host computer memory systems. Additionally, the same problem reoccurs as computer systems are combined into networked environments.